package com.xmg.design23.d18_visitor;

/**
 * 访问者（Visitor）模式的定义：将作用于某种数据结构中的各元素的操作分离出来封装成独立的类，
 * 使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作，为数据结构中的每个元素提供多种访问方式。
 * 它将对数据的操作与数据结构进行分离，是行为类模式中最复杂的一种模式。
 *
 * 访问者模式允许一个或者多个操作应用到一组对象上，设计意图是解耦操作和对象本身，
 * 保持类职责单一、满足开闭原则以及应对代码的复杂性。
 * 对于访问者模式，学习的主要难点在代码实现。
 * 而代码实现比较复杂的主要原因是，函数重载在大部分面向对象编程语言中是静态绑定的。
 * 也就是说，调用类的哪个重载函数，是在编译期间，由参数的声明类型决定的，而非运行时，根据参数的实际类型决定的。
 * 除此之外，我们还讲到Double Disptach。如果某种语言支持Double Dispatch，那就不需要访问者模式了。
 * 正是因为代码实现难理解，所以，在项目中应用这种模式，会导致代码的可读性比较差。
 * 如果你的同事不了解这种设计模式，可能就会读不懂、维护不了你写的代码。所以，除非不得已，不要使用这种模式。
 *
 * @Author: mazhongqing
 * @Date: 2021/3/24 18:11
 */
public class Test {
}
